// miniprogram/pages/myCard/myCard.js
var app = getApp();

Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 当用户没有邮卡时默认的状态
    baseUrl: app.globalData.baseUrl,
    words: [
      { name: '邮生活', type: 0, number: 0 },
      { name: '欢乐邮', type: 1, number: 0 },
      { name: '畅快邮', type: 2, number: 0 },
      { name: '悦享邮', type: 3, number: 0 },
    ],
    isShow: true,
    isMaskShow: false,
    animationData:{},
    prize: null,
    isShowBtn: true,
    selected: 0,      // 表示已选中的邮卡数量
    cardImagUrl: app.globalData.baseUrl + 'mycard_icon_noselect.png',
    cardSelectUrl: app.globalData.baseUrl + 'mycard_icon_selected.png',
  },

  selectCard(e){
    // 拿到数组
    let { words,selected } = this.data;
    // 拿到点击的邮卡的下标
    let index = e.currentTarget.dataset.index;

    // 限制用户必须拥有1张对应的邮卡才能选中
    if (words[index].number == 0){
      return;
    }

    // 1.已选中2个，选第三个需要阻止
    // 2.已选中2个，点已选中的取消选中
    if (selected >= 2 && !words[index].isSelect) {
      return;
    }

    // 如果当前邮卡是未选中状态，点击后切换成选中状态，并且增加选中邮卡数量，否则反之
    if (!words[index].isSelect){
      words[index].isSelect = true;
      selected++;
    } else {
      words[index].isSelect = false;
      selected--;
    }

    // 重新渲染邮卡的状态
    this.setData({
      words: words,
      selected: selected
    })
  },

  merge() {
    let { words, selected } = this.data;

    // 当选中的邮卡数量小于2时，不能合成
    if (selected < 2){
      wx.showToast({
        title: '必须选中2张邮卡',
        icon: 'none',
        duration: 2000,
      })
      return;
    }

    wx.showLoading({
      title: '正在合成',
    })

    // 遍历item中选中状态的邮卡下标，保存到数组selectedArr中
    let selectedArr = [];
    words.forEach((item,index) => {
      if (item.isSelect == true){
        selectedArr.push(index);
      }
    })

    // 将存放下标的数组selectedArr传递到云函数merge中
    wx.cloud.callFunction({
      name: 'merge',
      data: {
        selectedArr: selectedArr
      },
      success: (res) => {
        // 如果返回的是成功，显示中了几等奖
        if (res.result.success == true){
          // 获奖的图片链接
          let prize = res.result.prize;
          // 控制获奖弹框是否显示
          let isShow = false;
          // 隐藏Loading提示
          wx.hideLoading();

          // 重新渲染邮卡的数据
          this.setData({
            prize: prize,
            isShow: isShow,
            words: res.result.words,
            selected: 0,
          })
        }else{
          // 提示已经抽过奖了
          wx.showToast({
            title: res.result.msg,
            icon: 'none',
            duration: 2000,
          })
        }
      }
    })
  },

  toWriteData(){
    wx.navigateTo({
      url: '../writeData/writeData'
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    wx.showLoading({
      title: '加载中...',
    })

    // 用云函数showCard获得并渲染数据
    wx.cloud.callFunction({
      name: 'showCard',
      success: (res) => {
        if (res.result.user.data.length > 0){
          let isShowBtn = true;
          // 判断是否获得过奖品
          if (res.result.user.data[0].prize !== null) {
            // 如果已经获得奖品，显示按钮
            isShowBtn = false;
          }
          let words = res.result.user.data[0].words;
          this.setData({
            words: words,
            isShowBtn: isShowBtn, 
            isMaskShow: true
          })
          wx.hideLoading()
        }
      }
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    let animate = wx.createAnimation({
      duration: 600,
      timingFunction: 'ease-in-out',
      transformOrigin: 'center',
    })
    setInterval(function () {
      animate.scale(0.9).step()
        .scale(1).step();
      this.setData({
        animationData: animate.export()
      })
    }.bind(this), 1200)
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})